#pragma once
POCELAIN_NAMESPACE_BEGIN
enum EUniformType {

    E_UNIFORM_UNKNOWN= -1,

    //boolean
    E_UNIFORM_BOOL = 0,

    // integer
    E_UNIFORM_BYTE,
    E_UNIFORM_UBYTE,
    E_UNIFORM_SHORT,
    E_UNIFORM_USHORT,
    E_UNIFORM_INT,
    E_UNIFORM_UINT,

    // float
    //E_UNIFORM_HALF_FLOAT,
    E_UNIFORM_FLOAT,
    E_UNIFORM_DOUBLE,

    //vector
    E_UNIFORM_VECTOR2,
    E_UNIFORM_VECTOR3,
    E_UNIFORM_VECTOR4,

    E_UNIFORM_DVECTOR2,
    E_UNIFORM_DVECTOR3,
    E_UNIFORM_DVECTOR4,

    E_UNIFORM_BVECTOR2,
    E_UNIFORM_BVECTOR3,
    E_UNIFORM_BVECTOR4,

    E_UNIFORM_IVECTOR2,
    E_UNIFORM_IVECTOR3,
    E_UNIFORM_IVECTOR4,

    E_UNIFORM_UVECTOR2,
    E_UNIFORM_UVECTOR3,
    E_UNIFORM_UVECTOR4,

    //matrix
    E_UNIFORM_MATRIX2x2,
    E_UNIFORM_MATRIX2x3,
    E_UNIFORM_MATRIX2x4,

    E_UNIFORM_MATRIX3x2,
    E_UNIFORM_MATRIX3x3,
    E_UNIFORM_MATRIX3x4,

    E_UNIFORM_MATRIX4x2,
    E_UNIFORM_MATRIX4x3,
    E_UNIFORM_MATRIX4x4,

    E_UNIFORM_DMATRIX2x2,
    E_UNIFORM_DMATRIX2x3,
    E_UNIFORM_DMATRIX2x4,

    E_UNIFORM_DMATRIX3x2,
    E_UNIFORM_DMATRIX3x3,
    E_UNIFORM_DMATRIX3x4,

    E_UNIFORM_DMATRIX4x2,
    E_UNIFORM_DMATRIX4x3,
    E_UNIFORM_DMATRIX4x4,

    //sampler
    E_UNIFORM_SAMPLER_1D,
    E_UNIFORM_SAMPLER_2D,
    E_UNIFORM_SAMPLER_3D,
    
    //END
    E_UNIFORM_END
};
POCELAIN_NAMESPACE_END
